package find.the.repeat.number.two;
/**
 * @Time 2019/12/27
 * @author 王光浩
 * @Need 给出一个整型数组以及一个整数k，在数组中寻找出下标差最小，且对应元素值相等的i、j，判断|i-j|是否大于k，如果大于
 *       返回false，否则返回true。
 * @Method 遍历一遍数组。
 *         思路：暴力法。使用双层循环，将数组中的每一个元素和其他元素进行比较，求出最大的下标差，然后在和k值比较。
 *               复杂度分析：时间复杂度O（n*n）
 *                          空间复杂度O（1）
 *         改进：在第二层循环中进行判断，如果存在符合这样条件的两个下标i、j，则返回true，否则返回false。
 *               时间复杂度仍然是O（n^2），空间复杂度为O（1）
 */
public class MyMethodOne {
	 public boolean containsNearbyDuplicate(int[] nums, int k) {
	     int len=nums.length;
//	     int min=nums.length <<1;
//	     //将数组中所有元素两两比较，找出最大下标差
//	     for(int i=0;i<len-1;i++) {
//	    	 for(int j=i+1;j<len;j++) {
//	    		 if(nums[i]==nums[j] && min>(j-i)){
//	    			 min=j-i;
//	    		 }
//	    	 }
//	     }
//	     //将最大下标差和k进行比较
//	     return (min>k ||
//	    		 k==0)?false:true;
	     for(int i=0;i<len-1;i++) {
	    	 for(int j=i+1;j<len;j++) {
	    		 if(nums[i]==nums[j] && (j-i)<=k)
	    			 return true;
	    	 }
	     }
	     return false;
	 }
}
